package com.itheima.book.manager.dao;

import com.itheima.book.manager.domain.Book;

/**
 * BaseBookDao的内容好像和我们之前所定义的抽象类中的内容有点区别？BaseBookDao中的方法全是抽象方法，如果一个类中的方法全是抽象方法，那么我们就可以将这个类定义成接口;
 * 接口是java提供的另外一种引用数据类型 ， 接口中的方法全是抽象方法(jdk1.8做了接口的升级，我们本次暂且不考虑) , 这个接口是比抽象类还要抽象;
 *
 * 接口有什么意义呢?
 *
 * 1. 是一种规则的定义 ， 因为我们之前说过，抽象方法就是强制要求子类去做的事情
 * 2. 增强了扩展性
 *
 * 比如我们现在把这个BaseBookDao定义成一个接口，那么表达的意思就是定义了一种数据访问的规则；后期不论使用什么样的容器来进行数据的操作，你必须符合我这个接口规则
 * 如果你不符合我这个接口规则，那么其他的类就没有办法去使用你这个类
 *
 */

/**
 * 这样就定义了一个接口BaseBookDao,这个接口就定义了数据访问的规则
 */
public interface BaseBookDao {

    /**
     * 完成图书信息的修改操作，根据bookId进行修改
     * @param book
     */
    public abstract void updateBookByBookId(Book book) ;

    /**
     * 根据图书的id进行删除操作
     * @param bookId
     */
    public abstract  void deleteByBookId(String bookId);

    /**
     * 获取所有的图书信息
     * @return
     */
    public abstract Book[] getAllBooks() ;

    /**
     * 添加图书
     * @param book
     * @return
     */
    public abstract boolean addBook(Book book) ;

}
